package br.urca.impl;

import java.util.List;

import javax.inject.Inject;
import javax.persistence.EntityManager;
import javax.transaction.Transactional;

import br.urca.dao.SituacaoDisciplinaDAO;
import br.urca.model.SituacaoDisciplina;

@Transactional
public class JPASituacaoDisciplinaDAO implements SituacaoDisciplinaDAO {
	
	private EntityManager manager;
	
	public JPASituacaoDisciplinaDAO() {
		this(null);
	}
	
	@Inject
	public JPASituacaoDisciplinaDAO(EntityManager manager) {
		this.manager = manager;
	}

	@Override
	public List<SituacaoDisciplina> todos() {
		try {
			return this.manager.createQuery("SELECT s FROM SituacaoDisciplina s", SituacaoDisciplina.class)
					.getResultList();
		} catch(Exception e) {
			return null;
		}
	}

	@Override
	public SituacaoDisciplina getObject(String codigo) {
		try {
			return this.manager.createQuery("SELECT s FROM SituacaoDisciplina s "
					+ "WHERE s.codSituacao = :codigo", SituacaoDisciplina.class)
					.setParameter("codigo", codigo)
					.getSingleResult();
		} catch(Exception e) {
			return null;
		}
	}

	@Override
	public List<SituacaoDisciplina> getPorAcao(String acao) {
		try {
			return this.manager
					.createQuery(
							"SELECT s FROM SituacaoDisciplina s "
									+ "WHERE s.acao = :acao",
							SituacaoDisciplina.class)
					.setParameter("acao", acao).getResultList();
		} catch (Exception e) {
			return null;
		}
	}

}
